# -*- coding: utf-8 -*-

from pages.basePage import BaseHandler
import jinja2
import os
from models.usuario import Usuario
from models.mecanica import Mecanica
from models.persona import Persona

jinja_environment = jinja2.Environment(
    loader=jinja2.FileSystemLoader(os.path.dirname(__file__)))

class MecanicaCoisada:
    nome = None
    descricao = None
    tipo = None
    mid = None
    
class EscolherMecanica(BaseHandler):
    def get(self):
        userId = self.session.get('userid')        
        user = None
        if userId is not None:
            user = Usuario.get_by_id(userId)
        if user is None:
            self.redirect('/')
            return
        url = self.session.get('url')
        if url is None:
            self.redirect('/')
            return
        
        vincc = self.request.get('vincc')
            
        cinetica = self.request.get('cinetica')
        
        mecanicas = Mecanica.all()            
            
        mecanicasCoisadas = []
        for mecanica in mecanicas:
            mecanicaCoisada = MecanicaCoisada()
            mecanicaCoisada.descricao = mecanica.descricao
            mecanicaCoisada.nome = mecanica.nome
            mecanicaCoisada.tipo = mecanica.tipo
            mecanicaCoisada.mid = mecanica.key().id()
            mecanicasCoisadas.append(mecanicaCoisada)
            
        # Montando lista com tipos de cartas de mecânica
        descricoesMecanicas = ['Lugar'.decode('utf-8'), 'Roupa'.decode('utf-8'), 'Filme'.decode('utf-8'), 'Hobby'.decode('utf-8'), 'Música'.decode('utf-8'), 'Jogo'.decode('utf-8'), 'Livro'.decode('utf-8'), 'Cinética'.decode('utf-8')]
        mecanicasBreadas = [[],[],[],[],[],[],[],[]]
        for mecanica in mecanicasCoisadas:
            if mecanica.tipo == 'Lugar':
                mecanicasBreadas[0].append(mecanica)
            if mecanica.tipo == 'Roupa':
                mecanicasBreadas[1].append(mecanica)
            if mecanica.tipo == 'Filme':
                mecanicasBreadas[2].append(mecanica)
            if mecanica.tipo == 'Hobby':
                mecanicasBreadas[3].append(mecanica)
            if mecanica.tipo == 'Música':
                mecanicasBreadas[4].append(mecanica)
            if mecanica.tipo == 'Jogo':
                mecanicasBreadas[5].append(mecanica)
            if mecanica.tipo == 'Livro':
                mecanicasBreadas[6].append(mecanica)
            if mecanica.tipo == 'Cinetica':
                mecanicasBreadas[7].append(mecanica)
                
        if cinetica:
            mecanicasBreadas[0] = None
            mecanicasBreadas[1] = None
            mecanicasBreadas[2] = None
            mecanicasBreadas[3] = None
            mecanicasBreadas[4] = None
            mecanicasBreadas[5] = None
            mecanicasBreadas[6] = None
        else:
            mecanicasBreadas[7] = None
            
        #self.response.out.write(mecanicasBreadas)
        #return
        
        template_values = {
            'vincc' : vincc,
            'user' : user,
            'mecanicas' : mecanicasBreadas,
            'descricoesMecanicas' : descricoesMecanicas,
            'cinetica' : cinetica,
            'url' : url
        }
            
        template = jinja_environment.get_template('html/escolhermecanica.html')
        self.response.out.write(template.render(template_values))
        
    def post(self):
        userId = self.session.get('userid')        
        user = None
        if userId is not None:
            user = Usuario.get_by_id(userId)
        if user is None:
            self.redirect('/')
            return
        
        vincc = self.request.get('vincc')
            
        cinetica = self.request.get('cinetica')
        
        mecanicas_mids = self.request.get_all('chkMecanica')
        
        if cinetica:                     
            cenarioSessao = self.session.get('cenarioSessao')
            if cenarioSessao is None:
                self.redirect('/cenario')
                return
            
            if mecanicas_mids:
                for mid in mecanicas_mids:
                    cenarioSessao['cineticas'].append(long(mid))
                    
            self.session['cenarioSessao'] = cenarioSessao
            
            self.redirect('/cenario?vinc=1')
        else:
            personaSessao = self.session.get('personaSessao')
            if personaSessao is None:
                self.redirect('/criarPersona')
                return
            
            
            persona = Persona()
                                     
            persona.nome = personaSessao['nome']
            persona.descricao = personaSessao['descricao']
            persona.idade = personaSessao['idade']
            persona.sexo = personaSessao['sexo']
            persona.acaoReflexao = personaSessao['acaoReflexao']
            persona.monoPolicromatico = personaSessao['monoPolicromatico']
            persona.coletivoIndividual = personaSessao['coletivoIndividual']
            
            if persona.mecanicas is None:
                persona.mecanicas = []
                
            if mecanicas_mids:
                for mid in mecanicas_mids:
                    persona.mecanicas.append(Mecanica.get_by_id(long(mid)).key())
            
            persona.put()
            
            url = '/concluiCriarPersona?pid=' + str(persona.key().id())
            if vincc:
                url = url + '&vincc=1'
            self.redirect(url)
            